#include "Starred.h"
#include "IVisitor.h"

Starred::Starred(const exprTypePtr& value, int ctx, int nodeId):
    exprType(nodeId),
    _value(value),
    _ctx(ctx)
{
}
    
Starred::~Starred()
{
    
}
    
QString Starred::type() const
{
    return "Starred";
}
    

exprTypePtr Starred::value()
{
    return _value;
}

void Starred::setValue(const exprTypePtr& value)
{
    _value = value;
}

int Starred::ctx()
{
    return _ctx;
}

void Starred::setCtx(int ctx)
{
    _ctx = ctx;
}

    
QString Starred::toString() const
{
    return QString("Starred[value=%1, ctx=%2]").
                arg(_value ? _value->toString():"").
                arg(_ctx);
}
    
void Starred::accept(IVisitor* visitor, const SimpleNodePtr& node)
{
    visitor->visitStarred(node.dynamicCast<Starred>());
}
    
void Starred::traverse(IVisitor* visitor)
{
    if (_value != NULL)
        _value->accept(visitor, _value);
}